﻿Imports System.Text
Public Class frmCLRV
    Inherits formPadrao


    Dim Sep As Char = ","
    Dim Nombre As Double
    Public WithEvents ucPreambulo As New ucPreambulo
    Private nomeDiretorio As String = Nothing
    Public WithEvents btnLimpar As System.Windows.Forms.Button
    Private registro As New registroVO
    Private mensagem As String
    Private erroNivel As Integer = 0
    Private regInserido As New registroVO
    Public tipoExame As Integer


    Public Property getUcPreambulo() As ucPreambulo

        Get
            Return ucPreambulo

        End Get

        Set(ByVal value As ucPreambulo)
            ucPreambulo = value

        End Set

    End Property


    Public Sub New()
        ' This call is required by the designer.
        InitializeComponent()
        pnlDados.Controls.Add(ucPreambulo)
        If Not DesignMode Then
            Sep = Application.CurrentCulture.NumberFormat.NumberDecimalSeparator
            pnlDados.AutoSize = True
        End If
    End Sub

    Private Sub TextboxNumeric_KeyPress(ByVal sender As Object, ByVal e As KeyPressEventArgs)
        Dim nonNumberEntered As Boolean
        nonNumberEntered = True

        If (e.KeyChar >= Convert.ToChar(48) AndAlso e.KeyChar <= Convert.ToChar(57)) OrElse e.KeyChar = Convert.ToChar(8) OrElse e.KeyChar = Convert.ToChar(44) Then
            nonNumberEntered = False
        End If
        If nonNumberEntered = True Then
            e.Handled = True
        Else
            e.Handled = False
        End If
    End Sub


    Private Sub frmAvaliacao_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Load

        Try
            Me.WindowState = FormWindowState.Maximized
            generica.redimensionaControle(pnlDados)

            ucPreambulo.ucPerito.Enabled = True
            ucPreambulo.selecionaIdTipoPericia = 3

            ucPreambulo.selecionaIdNatureza = ucPreambulo.ID_NATUREZA

            ucPreambulo.pnlNatureza.Enabled = False
            Me.ControlBox = False
            ucPreambulo.getVitima = "A fé pública"
            cmbDetran.SelectedIndex = 0
            cmbGrafica.SelectedIndex = 0

            If ucPreambulo.ID_NATUREZA = 13 Then
                Select Case tipoExame
                    Case 0
                        ucPreambulo.lblTitulo.Text = "ANÁLISE DOCUMENTOSCÓPICA DE CRLV FALSO"
                    Case 1
                        ucPreambulo.lblTitulo.Text = "ANÁLISE DOCUMENTOSCÓPICA DE CRLV AUTÊNTICO"
                    Case 3
                        ucPreambulo.lblTitulo.Text = "ANÁLISE DOCUMENTOSCÓPICA DE CRLV AUTÊNTICO EXPEDIDO IRREGULARMENTE"
                    Case 4
                        ucPreambulo.lblTitulo.Text = "ANÁLISE DOCUMENTOSCÓPICA DE CRLV AUTÊNTICO"
                End Select

            ElseIf ucPreambulo.ID_NATUREZA = 12 Then
                ucPreambulo.lblTitulo.Text = "ANÁLISE DOCUMENTOSCÓPICA DE ALTERAÇÃO DOCUMENTAL DE CRLV"
            End If
        Catch ex As Exception
            generica.gravaErro(ex)
        End Try

        '' ''----------------------------------------------------------
        '' '' TESTES
        '' ''----------------------------------------------------------
        'txtImpresso.Text = "98588554"
        'cmbDetran.SelectedIndex = 1
        'txtRENAVAN.Text = "111111111111"
        'txtAno.Text = "2012"
        'txtProprietario.Text = "ALEXANDRE PIAZZA DE OLIVEIRA"
        'txtCPF.Text = "88246469649"
        'txtPlaca.Text = "NXZ-3973"
        'txtChassi.Text = "9BC747474747999"
        'txtMarca.Text = "CHEVROLET/CRUZE"
        'txtAnoFabricacao.Text = "2012"
        'txtAnoModelo.Text = "2012"
        'txtCor.Text = "VERMELHO"
        'txtLocal.Text = "BELO HORIZONTE"
        'cmbGrafica.SelectedIndex = 1
        'cmbDevolucao.SelectedIndex = 1



    End Sub
    '--------------------------------------------------------------------------------------------------------------------------------
    ' FUNÇÃO QUE IRÁ GERAR O LAUDO
    '--------------------------------------------------------------------------------------------------------------------------------
    Private Sub geraLaudo()

        Dim regBO As New registroBO
        generica.tempo = Now
        Dim oWordTemp As New WordAppl
        Dim registroBo As New registroBO

        '-----------------------------------------------------------------------------------------
        ' ABRE O ARQUIVO WORD
        '-----------------------------------------------------------------------------------------

        If registroGlobal.registroPincipal.ID_REGISTRO > 0 Or ucPreambulo.ehNovo Then

            pb.zeraContador()
            pb.stepBarra(10)
            pb.Visible = True
            pb.stepBarra(10, "Criando o registro na base de dados")

            '-----------------------------------------------------------------------------------------
            ' GRAVA REGISTRO NA BASE DE DADOS
            '-----------------------------------------------------------------------------------------
            pb.stepBarra(10)
            Try
                If generica.gravaBanco Then

                    '------------------------------------------------------------------------------------
                    ' VERFICA SE É UM NOVO REGISTRO OU SE É UM REGISTRO JÁ ARMAZENADO NA BASE DE DADOS
                    '------------------------------------------------------------------------------------
                    pb.stepBarra(10)
                    Dim textoProva As String = String.Empty
                    Dim provas As New StringBuilder

                    provas.Append("CLRV n° ").Append(txtImpresso.Text)
                    provas.Append(",nome do proprietario:").Append(txtProprietario.Text).Append(",DETRAN:").Append(cmbDetran.SelectedItem)


                    If provas.ToString.Length > 250 Then
                        textoProva = provas.ToString.Substring(0, 250)
                    Else
                        textoProva = provas.ToString
                    End If

                    Dim registroGravado As Integer

                    If registroGlobal.registroPincipal.ID_REGISTRO > 0 And registroGlobal.registroPincipal.GEROULAUDO = False Then
                        '-----------------------------------------------------------------------------------------
                        nomeDiretorio = generica.retornaNomeDiretorio(ucPreambulo.getAno, _
                                                                  ucPreambulo.getNumeroLaudo, "DOCUMENTOSCOPIA CRLV ", ucPreambulo.getIndiciado, ucPreambulo.getVitima)
                        '-----------------------------------------------------------------------------------------
                        registroGravado = regBO.updateRegistro(registroGlobal.registroPincipal, _
                                                              textoProva, ucPreambulo.getIdPeritoSelecionado, _
                                                               nomeDiretorio, ucPreambulo)
                        pb.stepBarra(10)
                        mensagem = (" O laudo n°" & registroGravado & " foi atualizado com sucesso na base de dados. Clique no ícone do WORD para visualizar o laudo.")
                        registroGlobal.registroPincipal = registroBo.getRegistroSimplificado(registroGravado, ucPreambulo.getAno)
                    Else

                        Dim reg As New registroVO

                        Dim ultimo As Integer = regBO.getUltimoRegistro
                        Dim registroTemporario As Integer = 0
                        If ultimo <> ucPreambulo.getNumeroLaudo Then
                            registroTemporario = ucPreambulo.getNumeroLaudo
                            ucPreambulo.getNumeroLaudo = ultimo
                        End If

                        '-----------------------------------------------------------------------------------------
                        nomeDiretorio = generica.retornaNomeDiretorio(ucPreambulo.getAno, _
                                                                  ucPreambulo.getNumeroLaudo, "DOCUMENTOSCOPIA CRLV ", ucPreambulo.getIndiciado, ucPreambulo.getVitima)
                        '-----------------------------------------------------------------------------------------

                        reg = generica.populaRegistro(ucPreambulo, generica.retornaNomeArquivoCompleto(nomeDiretorio & ".doc", nomeDiretorio), textoProva)
                        registroGravado = regBO.insereRegistro(reg)
                        registroGlobal.registroPincipal = registroBo.getRegistroSimplificado(registroGravado, ucPreambulo.getAno)
                        If registroTemporario = 0 Then
                            If ucPreambulo.ID_NATUREZA = 12 Then
                                mensagem = ("ATENÇÃO !!! COMPLEMENTAR O LAUDO COM AS INFORMAÇÕES GRIFADAS EM VERMELHO. O laudo n°" & registroGlobal.registroPincipal.NUM_REGISTRO & " foi inserido com sucesso na base de dados. Clique no ícone do WORD para visualizar o laudo. ")
                            Else
                                mensagem = (" O laudo n°" & registroGlobal.registroPincipal.NUM_REGISTRO & " foi inserido com sucesso na base de dados. Clique no ícone do WORD para visualizar o laudo.")
                            End If
                        Else
                            mensagem = (" O laudo n°" & ultimo & " foi inserido com sucesso na base de dados. O laudo não foi gravado com o número inicial " & registroTemporario & " pelo fato de outro usuário ter inserido este número de laudo no banco de dados. Clique no ícone do WORD para visualizar o laudo.")
                        End If
                        pb.stepBarra(10)
                    End If


                    '------------------------------------------------------------------------------------
                    ' INSERE DADOS NA TABELA PONTUACAO
                    '------------------------------------------------------------------------------------
                    Dim pontuacaobo As New pontuacaoBO
                    Dim pontuacao As New pontuacaoVO
                    Dim i As Integer

                    If ucPreambulo.ehNovo Then
                        With pontuacao
                            .USUARIO = New usuarioVO With {.ID_USUARIO = ucPreambulo.getIdPeritoSelecionado}
                            .REGISTRO = New registroVO With {.ID_REGISTRO = registroGlobal.registroPincipal.ID_REGISTRO}
                            .PONTUACAO = registroGlobal.registroPincipal.NATUREZA.PONTOS_ATENDIMENTO
                            .TIPO_OCORRENCIA = "ATENDIMENTO"
                            .DATA_ALTERACAO = Nothing
                        End With

                        i = pontuacaobo.inserePontuacao(pontuacao)

                    Else
                        i = pontuacaobo.upDatePontuacao(ucPreambulo.getIdPeritoSelecionado, registroGlobal.registroPincipal)
                    End If

                Else
                    mensagem = ("O sistema está configurado para não gravar registros na base de dados do sistema de registro eletrônico. Para habilitar, clique em configurações > Configurar aplicação e marque a opção <<SIM>>>. Apenas o laudo de n° " & ucPreambulo.getNumeroLaudo & " será gerado. Clique no ícono do WORD para visualizar o documento.")
                End If
                '-------------------------------------------------------------------------------------
                ' INSERE DADOS ITENS DA TABELA NA BASE LOCAL
                '-------------------------------------------------------------------------------------


            Catch ex As Exception
                habilita(False, , False)
                generica.encerraProcessosWord()
                generica.gravaErro(ex)
                erroNivel = 1
                Exit Sub
            End Try

            Try

                Dim diretorio As String = System.Configuration.ConfigurationManager.AppSettings("dirTemplateword")
                If ucPreambulo.ID_NATUREZA = 13 Then
                    Select Case tipoExame
                        Case 0
                            oWordTemp.OpenModelo("CRLVFALSO.dot")
                        Case 1
                            oWordTemp.OpenModelo("CRLVFALSO.dot")
                        Case 3
                            oWordTemp.OpenModelo("CRLVAUTENTICOIRREGULAR.dot")
                        Case 4
                            oWordTemp.OpenModelo("CRLVAUTENTICO.dot")
                    End Select

                ElseIf ucPreambulo.ID_NATUREZA = 12 Then
                    oWordTemp.OpenModelo("CRLVAUTENTICOALTERADO.dot")
                End If
                oWordTemp.SaveAs(nomeDiretorio, nomeDiretorio & ".doc")
                oWordTemp.Quit()
                oWordTemp = Nothing

                '------------------------------------------------------------------------------------------------
                ' CRIA O PREMABULO
                '------------------------------------------------------------------------------------------------
                Dim oWord As New WordAppl
                pb.stepBarra(10, "Criando o diretório da aplicação")
                oWord.Open(nomeDiretorio, nomeDiretorio & ".doc")
                oWord.criaPreambulo(ucPreambulo)
                '------------------------------------------------------------------------------------------------
                ' POPULA DOCUMENTO WORD
                '------------------------------------------------------------------------------------------------
                Dim textoInvolucro As String
                pb.stepBarra(10, "Inserindo dados no documento")
                oWord.FindAndReplacement("<<uf>>", cmbDetran.Text)
                oWord.FindAndReplacement("<<impresso>>", txtImpresso.Text)
                oWord.FindAndReplacement("<<renavan>>", txtRENAVAN.Text)
                oWord.FindAndReplacement("<<exercicio>>", txtAno.Text)
                oWord.FindAndReplacement("<<proprietario>>", txtProprietario.Text)
                oWord.FindAndReplacement("<<cpf_cgc>>", txtCPF.Text)
                oWord.FindAndReplacement("<<placa>>", txtPlaca.Text)
                oWord.FindAndReplacement("<<chassi>>", txtChassi.Text)
                oWord.FindAndReplacement("<<marca>>", txtMarca.Text)
                oWord.FindAndReplacement("<<anofabricacaomodelo>>", txtAnoFabricacao.Text & "/" & txtAnoModelo.Text)
                oWord.FindAndReplacement("<<cor>>", txtCor.Text)
                oWord.FindAndReplacement("<<expedicao>>", txtLocal.Text & ", " & CDate(txtData.Text).ToLongDateString)
                oWord.FindAndReplacement("<<grafica>>", cmbGrafica.Text)

                If cmbDevolucao.Text.ToLower.Equals("invólucro de segurança") Then
                    textoInvolucro = cmbDevolucao.Text & " nº " & txtInvolucro.Text
                Else
                    textoInvolucro = cmbDevolucao.Text
                End If
                oWord.FindAndReplacement("<<involucro>>", textoInvolucro)
                oWord.FindAndReplacement("<<data_expedicao>>", txtData.Text)
                oWord.criaAssinatura(ucPreambulo)
                oWord.Save()
                oWord.Quit()
                pb.stepBarra(10, "Finalizando o documento")

                '-----------------------------------------------------------------------------------------------------------------------
                ' CHAMA ROTINA PARA LIMPAR CAMPOS DO CONTROLE E DO DATAGRID VIEW
                '-----------------------------------------------------------------------------------------------------------------------

            Catch exc As Exception
                generica.encerraProcessosWord()
                generica.gravaErro(exc)
                erroNivel = 2
                Exit Sub
            End Try
        Else

            '----------------------------------------------------------------------------------------------------------------------------
            ' CASO SEJA UM ARQUIVO QUE JÁ SE ENCONTRA CADASTRADO NA BASE DE DADOS
            '----------------------------------------------------------------------------------------------------------------------------
            If registroGlobal.registroPincipal.ID_REGISTRO > 0 And registroGlobal.registroPincipal.GEROULAUDO Then
                habilita(False)
                mensagem = ("O laudo n° " & ucPreambulo.getNumeroLaudo & "/" & ucPreambulo.getAno & " já existe registrado na base de dados.Clique no ícone do WORD para visualizar o laudo.")
            Else
                mensagem = ("O laudo n° " & ucPreambulo.getNumeroLaudo & "/" & ucPreambulo.getAno & " não foi encontrado na base de dados.")
            End If
        End If
        MsgBox(mensagem)
    End Sub

    Private Sub habilita(ByVal habilita As Boolean, _
                         Optional ByVal habilitaBarra As Boolean = Nothing, _
                         Optional ByVal habilitaVerWord As Boolean = Nothing, _
                        Optional ByVal vergrupoCNH As Boolean = Nothing, _
                               Optional ByVal habilitaGrupoCNH As Boolean = Nothing, _
                               Optional ByVal habilitaUCNatureza As Boolean = Nothing)




        If Not IsNothing(habilitaVerWord) Then
            ucPreambulo.btnVerWord.Visible = habilitaVerWord
        Else
            ucPreambulo.btnVerWord.Visible = Not habilita
        End If

        If Not IsNothing(vergrupoCNH) Then
            grpDrogas.Visible = vergrupoCNH
        Else
            grpDrogas.Visible = vergrupoCNH
        End If

        If Not IsNothing(habilitaGrupoCNH) Then
            grpDrogas.Enabled = habilitaGrupoCNH
        Else
            grpDrogas.Enabled = habilitaGrupoCNH
        End If

        'If ucPreambulo.ehNovo Then

        '    grpDrogas.Visible = True
        'Else
        '    grpDrogas.Visible = False

        'End If

        ucPreambulo.btnGeraLaudo.Enabled = habilita
        ucPreambulo.habilitaCampos(habilita)
        ucPreambulo.selecionaIdTipoPericia = 3
        ucPreambulo.selecionaIdNatureza = ucPreambulo.ID_NATUREZA
        If Not IsNothing(habilitaUCNatureza) Then
            ucPreambulo.pnlNatureza.Enabled = habilitaUCNatureza
        End If

        'grpDrogas.Visible = habilita

        If Not IsNothing(habilitaBarra) Then
            pb.Visible = habilitaBarra
            pb.zeraContador()
        End If
    End Sub

    Private Sub btnGerarLaudo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
        Dim isOk As Boolean = False
        Try
            If (generica.validaCampos(ucPreambulo)) Then
                geraLaudo()
            End If
        Catch ex As Exception
            generica.gravaErro(ex)
        End Try
    End Sub

    Private Sub btnLimpa_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
        Try
            ucPreambulo.limparCampos()
        Catch ex As Exception
            generica.gravaErro(ex)
        End Try
    End Sub

    Private Sub btnWord_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
        Try
            If registroGlobal.registroPincipal.NUM_REGISTRO > 0 And registroGlobal.registroPincipal.GEROULAUDO Then
                generica.visualizaWord(nomeDiretorio, nomeDiretorio & ".doc")
            Else
                generica.visualizaWord(nomeDiretorio, nomeDiretorio & ".doc")
            End If
        Catch ex As Exception
            generica.gravaErro(ex)
        End Try
    End Sub

    Private Sub chamaEventoLimpaCampos(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ucPreambulo.onClickLimpaCampos
        Try
            generica.limpaControle(grpDrogas)
            limpaCNH(grpDrogas)
            ucPreambulo.populaDados()
            habilita(True, False, False, True, True, False)

        Catch ex As Exception
            generica.gravaErro(ex)
        End Try
    End Sub
    Private Sub chamaEventoGeraLaudo(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ucPreambulo.onClickGeraLaudo
        Try

                'COPIAR ESTE TRECHO
                Dim regBO As New registroBO
                Dim registroVOTemp As New registroVO
                Dim novoRegistro As Integer = 0
                registroVOTemp = regBO.getRegistroSimplificado(ucPreambulo.getNumeroLaudo, ucPreambulo.getAno)

                If registroVOTemp.NUM_REGISTRO > 0 And registroVOTemp.GEROULAUDO And ucPreambulo.ehNovo Then
                    novoRegistro = regBO.getUltimoRegistro
                    MsgBox("Laundo n° " & registroVOTemp.NUM_REGISTRO & " já foi inserido na base de dados por outro usuário logado no sistema. O laudo será gerado com o número " & novoRegistro)
                    ucPreambulo.getNumeroLaudo = novoRegistro

                ElseIf registroVOTemp.NUM_REGISTRO > 0 And registroVOTemp.GEROULAUDO Then
                    MsgBox("Laundo n° " & registroVOTemp.NUM_REGISTRO & " já foi atualizado na base de dados por outro usuário logado no sistema.")
                    Exit Sub
                End If

                'FIM DO TRECHO

            If (generica.validaCampos(ucPreambulo)) Then
                If validaCampos() Then
                    pb.zeraContador()
                    pb.stepBarra(10, "Verficando validade das informãçoes")
                    pb.Visible = True
                    generica.salvaPreambulo(ucPreambulo)
                    geraLaudo()
                    If erroNivel > 0 Then
                        If generica.rollBack(registroGlobal.registroPincipal, nomeDiretorio, erroNivel, ucPreambulo.ehNovo, ucPreambulo) Then

                            MsgBox("O sistema recuperou de um erro grave e nenhuma informação foi gravada. Para registrar um novo laudo, clique em novo laudo")
                            erroNivel = 0
                            ucPreambulo.btnLimpaCampos.PerformClick()
                        End If
                    Else
                        ucPreambulo.txtDataEntrada.Enabled = False
                        habilita(False, False, True, True, False, False)
                    End If
                End If
            End If
        Catch ex As Exception
            generica.gravaErro(ex)
        End Try
    End Sub
    Private Sub habilitaPainelInferior(ByVal habilita As Boolean)
        grpDrogas.Enabled = habilita
    End Sub

    Private Function validaCampos() As Boolean

        Dim ok As Boolean = False

        Try
            If txtImpresso.Text.Equals(String.Empty) Then

                erro.SetError(txtImpresso, "Campo obrigatório")
                txtImpresso.Focus()
                Exit Try
            ElseIf cmbDetran.Text.Equals(String.Empty) Then
                erro.SetError(cmbDetran, "Campo obrigatório")
                cmbDetran.Focus()
                Exit Try
            ElseIf txtRENAVAN.Text.Equals(String.Empty) Then
                erro.SetError(txtRENAVAN, "Campo obrigatório")
                txtRENAVAN.Focus()
                Exit Try
            ElseIf txtAno.Text.Equals(String.Empty) Then
                erro.SetError(txtAno, "Campo obrigatório")
                txtAno.Focus()
                Exit Try
            ElseIf txtProprietario.Text.Equals(String.Empty) Then
                erro.SetError(txtProprietario, "Campo obrigatório")
                txtProprietario.Focus()
                Exit Try
            ElseIf txtCPF.Text.Equals(String.Empty) Then
                erro.SetError(txtCPF, "Campo obrigatório")
                txtCPF.Focus()
                Exit Try
            ElseIf txtPlaca.Text.Equals(String.Empty) Then
                erro.SetError(txtPlaca, "Campo obrigatório")
                txtPlaca.Focus()
            ElseIf txtChassi.Text.Equals(String.Empty) Then
                erro.SetError(txtChassi, "Campo obrigatório")
                txtChassi.Focus()
                Exit Try
            ElseIf txtMarca.Text.Equals(String.Empty) Then
                erro.SetError(txtMarca, "Campo obrigatório")
                txtMarca.Focus()
                Exit Try
            ElseIf txtAnoFabricacao.Text.Equals(String.Empty) Then
                erro.SetError(txtAnoFabricacao, "Campo obrigatório")
                txtAnoFabricacao.Focus()
                Exit Try
            ElseIf txtAnoModelo.Text.Equals(String.Empty) Then
                erro.SetError(txtAnoModelo, "Campo obrigatório")
                txtAnoModelo.Focus()
                Exit Try
            ElseIf txtCor.Text.Equals(String.Empty) Then
                erro.SetError(txtCor, "Campo obrigatório")
                txtCor.Focus()
            ElseIf txtLocal.Text.Equals(String.Empty) Then
                erro.SetError(txtLocal, "Campo obrigatório")
                txtLocal.Focus()
                Exit Try
            ElseIf txtCor.Text.Equals(String.Empty) Then
                erro.SetError(txtCor, "Campo obrigatório")
                txtCor.Focus()
            ElseIf txtLocal.Text.Equals(String.Empty) Then
                erro.SetError(txtLocal, "Campo obrigatório")
                txtLocal.Focus()
                Exit Try
            ElseIf txtData.Text.Equals(String.Empty) Then
                erro.SetError(txtData, "Campo obrigatório")
                txtData.Focus()
                Exit Try
            ElseIf Not IsDate(txtData.Text) Then
                erro.SetError(txtData, "Formato de data inválido")
                txtData.Focus()
                Exit Try
            Else
                ok = True
            End If
        Catch ex As Exception
            generica.gravaErro(ex)
        End Try
        Return ok

    End Function

   

    Private Sub chamaEventoVisualizaWord(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ucPreambulo.onClickVisualizaWord
        Try
            If registroGlobal.registroPincipal.NUM_REGISTRO > 0 And registroGlobal.registroPincipal.GEROULAUDO Then
                generica.visualizaWord("", "", registroGlobal.registroPincipal.NOME_DIRETORIO)
            Else
                generica.visualizaWord(nomeDiretorio, nomeDiretorio & ".doc")
            End If
        Catch ex As Exception
            generica.gravaErro(ex)
        End Try
    End Sub
    Private Sub limpaCNH(ByVal grupo As GroupBox)
        Try
            For Each ctrl In grupo.Controls
                If TypeOf (ctrl) Is TextBox Then
                    CType(ctrl, TextBox).Text = String.Empty
                ElseIf TypeOf (ctrl) Is ComboBox Then
                    CType(ctrl, ComboBox).SelectedIndex = 0
                ElseIf TypeOf (ctrl) Is MaskedTextBox Then
                    CType(ctrl, MaskedTextBox).Text = String.Empty
                End If
                erro.SetError(ctrl, String.Empty)
            Next
            cmbDetran.SelectedIndex = -1
            cmbGrafica.SelectedIndex = -1
            cmbDevolucao.SelectedIndex = -1
        Catch ex As Exception
            generica.gravaErro(ex)
        End Try
    End Sub
    Private Sub chamaEventoNovoLaudo(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ucPreambulo.onClickNovoLaudo
        Try
            ucPreambulo.limparCampos()
            limpaCNH(grpDrogas)
            ucPreambulo.populaDados()
            habilita(True, False, False, True, True)
        Catch ex As Exception
            generica.gravaErro(ex)
        End Try
    End Sub


    Public Sub chamaEventoBuscaLaudo(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ucPreambulo.onClickBuscaLaudo
        Try

            ucPreambulo.getIdNatureza = ucPreambulo.ID_NATUREZA


            limpaCNH(grpDrogas)

            ucPreambulo.buscaDadosLaudo(ucPreambulo, Me.MdiParent)
            If registroGlobal.registroPincipal.ID_REGISTRO > 0 And registroGlobal.registroPincipal.GEROULAUDO Then

                habilita(False, , True, True)
            Else
                habilita(True, False, False, True, True)
            End If
        Catch ex As Exception
            generica.gravaErro(ex)
        End Try
    End Sub


    Private Sub txtImpresso_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs)
        If Not (Char.IsNumber(e.KeyChar) Or e.KeyChar.Equals(Sep) Or Char.IsControl(e.KeyChar)) Then e.Handled = True
    End Sub

    Private Sub txtRegistro_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs)
        If Not (Char.IsNumber(e.KeyChar) Or e.KeyChar.Equals(Sep) Or Char.IsControl(e.KeyChar)) Then e.Handled = True
    End Sub

    Private Sub txtDataNasc_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs)
        If txtData.Text.Equals(String.Empty) Then
            erro.SetError(txtData, "Campo obrigatário")
            txtData.Focus()
        Else
            erro.SetError(txtData, "")
        End If
    End Sub
    Private Sub cmbDetran_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs)
        e.Handled = True
    End Sub
    Private Sub cmbCategoria_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs)
        e.Handled = True
    End Sub
    Private Sub cmbGrafica_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs)
        e.Handled = True
    End Sub
    
   
   
    Private Sub txtImpresso_KeyPress1(sender As Object, e As KeyPressEventArgs) Handles txtImpresso.KeyPress
        If Not (Char.IsNumber(e.KeyChar) Or e.KeyChar.Equals(Sep) Or Char.IsControl(e.KeyChar)) Then e.Handled = True
    End Sub

    Private Sub txtRENAVAN_KeyPress(sender As Object, e As KeyPressEventArgs) Handles txtRENAVAN.KeyPress
        If Not (Char.IsNumber(e.KeyChar) Or e.KeyChar.Equals(Sep) Or Char.IsControl(e.KeyChar)) Then e.Handled = True
    End Sub

    Private Sub txtAno_KeyPress(sender As Object, e As KeyPressEventArgs) Handles txtAno.KeyPress
        If Not (Char.IsNumber(e.KeyChar) Or e.KeyChar.Equals(Sep) Or Char.IsControl(e.KeyChar)) Then e.Handled = True
    End Sub

    Private Sub txtCPF_KeyPress(sender As Object, e As KeyPressEventArgs) Handles txtCPF.KeyPress
        If Not (Char.IsNumber(e.KeyChar) Or e.KeyChar.Equals(Sep) Or Char.IsControl(e.KeyChar)) Then e.Handled = True
    End Sub

    Private Sub txtPlaca_KeyPress(sender As Object, e As KeyPressEventArgs)
        If Not (Char.IsNumber(e.KeyChar) Or e.KeyChar.Equals(Sep) Or Char.IsControl(e.KeyChar)) Then e.Handled = True
    End Sub

    'Private Sub txtChassi_KeyPress(sender As Object, e As KeyPressEventArgs) Handles txtChassi.KeyPress
    '    If Not (Char.IsNumber(e.KeyChar) Or e.KeyChar.Equals(Sep) Or Char.IsControl(e.KeyChar)) Then e.Handled = True
    'End Sub
    Private Sub txtAnoModelo_KeyPress(sender As Object, e As KeyPressEventArgs) Handles txtAnoModelo.KeyPress
        If Not (Char.IsNumber(e.KeyChar) Or e.KeyChar.Equals(Sep) Or Char.IsControl(e.KeyChar)) Then e.Handled = True
    End Sub

    Private Sub txtAnoFabricacao_KeyPress(sender As Object, e As KeyPressEventArgs) Handles txtAnoFabricacao.KeyPress
        If Not (Char.IsNumber(e.KeyChar) Or e.KeyChar.Equals(Sep) Or Char.IsControl(e.KeyChar)) Then e.Handled = True
    End Sub

    Private Sub txtProprietario_TextChanged(sender As Object, e As EventArgs) Handles txtProprietario.TextChanged

    End Sub

    Private Sub ComboBox1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cmbDevolucao.SelectedIndexChanged
        If cmbDevolucao.Text.ToLower.Equals("invólucro de segurança") Then
            txtInvolucro.Visible = True
        Else
            txtInvolucro.Visible = False
        End If
    End Sub

    Private Sub txtChassi_TextChanged(sender As Object, e As EventArgs) Handles txtChassi.TextChanged

    End Sub
End Class